/**
*	@file PKB.h
*
*	@brief this header will include all the PKB component
*
*	@author li yuchen
*
*	@date 1/28/2011
*/


#ifndef PKB_H
#define PKB_H

#include "AST.h"
#include "VarTable.h"
#include "StmtTable.h"
#include "ProcTable.h"
#include "ConstTable.h"
#include "BlkTable.h"
#include "Modifies.h"
#include "Uses.h"
#include "Parent.h"
#include "Follows.h"
#include "Calls.h"
#include "Next.h"
#include "Affects.h"
#include "NextBip.h"
#include "AffectsBip.h"
using namespace std;

/** this class is mainly for drawing the AST and CFG */
class PKB{
public: 
	/**
	*	@brief this method will create a image which represent the AST
	*	@brief pre-condition: graphviz_dot_path should have a complete path to graphviz dot.exe e.x "D:\\programs\\Graphviz\\bin\\dot.exe
	*	@brief                output file path should also be complete, e.x. "C:\\Users\\liyuchen\\Desktop\Folder\\" with \\ at the end!!
	*	@brief 			      only work under windows machine with windows photo viewer dll available at: 
	*   @brief                C:\\Program Files\\Windows Photo Viewer\\PhotoViewer.dll\\
	*	@brief				  post-condition:  the image will be created by output_file_path\AST.dot and output_file_path\AST.png 
	*/
	static void DrawAST();

	/**
	*	@brief for graphviz_dot_path and output_file_path please refer to DrawAST in this header file
	*		proc_idx must be valid in this case
	*		pre-condition and post-condition similar to DrawAST function
	*/
	static void DrawCFG();
};

#endif